shortcutswindow: Make dispose work properly
authorBenjamin Otte <otte@redhat.com>
Tue, 10 Jan 2017 14:59:26 +0000 (15:59 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 11 Jan 2017 17:33:09 +0000 (18:33 +0100)
gtk/gtkshortcutswindow.c

index dbe6419165e94c618c97bc5debe93db818c6c49c..86d9532773140f3776ea9cfb13b4874e79778502 100644 (file)
@@ -654,26 +654,26 @@ gtk_shortcuts_window_dispose (GObject *object)
   GtkShortcutsWindow *self = (GtkShortcutsWindow *)object;
   GtkShortcutsWindowPrivate *priv = gtk_shortcuts_window_get_instance_private (self);
 
-  g_signal_handlers_disconnect_by_func (priv->stack, G_CALLBACK (update_title_stack), self);
+  if (priv->stack)
+    g_signal_handlers_disconnect_by_func (priv->stack, G_CALLBACK (update_title_stack), self);
 
   gtk_shortcuts_window_set_window (self, NULL);
 
   if (priv->header_bar)
     {
-      gtk_widget_destroy (GTK_WIDGET (priv->header_bar));
+      gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (priv->header_bar));
       priv->header_bar = NULL;
       priv->popover = NULL;
     }
 
-  G_OBJECT_CLASS (gtk_shortcuts_window_parent_class)->dispose (object);
-
-#if 0
   if (priv->main_box)
     {
-      gtk_widget_destroy (GTK_WIDGET (priv->main_box));
+      gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (priv->main_box));
       priv->main_box = NULL;
+      priv->stack = NULL;
     }
-#endif
+
+  G_OBJECT_CLASS (gtk_shortcuts_window_parent_class)->dispose (object);
 }
 
 static void